package com.ktgj.customer.mapper;

import java.util.List;
import com.ktgj.customer.domain.Card;
import com.ktgj.customer.domain.dto.CardCRMAllDTO;
import com.ktgj.customer.domain.dto.CardDTO;
import com.ktgj.customer.domain.dto.PayTypeDTO;

/**
 * 卡Mapper接口
 * 
 * @author ruoyi
 * @date 2021-07-30
 */
public interface CardMapper 
{
    /**
     * 查询卡
     * 
     * @param cardId 卡ID
     * @return 卡
     */
    public Card selectCardById(Long cardId);

    /**
     * 查询卡及该卡下拥有的可用权益项
     *
     * @param cardId 卡ID
     * @return 卡
     */
    public Card selectCardAndHaveRightdetailsById(Long cardId);

    /**
     * 查询卡列表
     * 
     * @param card 卡
     * @return 卡集合
     */
    public List<Card> selectCardList(Card card);

    /**
     * 新增卡
     * 
     * @param card 卡
     * @return 结果
     */
    public int insertCard(Card card);

    /**
     * 修改卡
     * 
     * @param card 卡
     * @return 结果
     */
    public int updateCard(Card card);

    /**
     * 删除卡
     * 
     * @param cardId 卡ID
     * @return 结果
     */
    public int deleteCardById(Long cardId);

    /**
     * 批量删除卡
     * 
     * @param cardIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteCardByIds(Long[] cardIds);

    /**
     * 根据id查询卡信息
     * */
    public Card selectCardByCardId(Long cardId);

    List<CardDTO> selectCardAllDetails();

    /**
     * 查询卡类型id
     * */
    public Card backSelectCard(String cardSectionName);

    CardDTO selectCardAndRightDetailById(Long cardId);

    /**
     * 查询卡级别
     * */
    public Card cardLevel(Long cardId);

    List<CardCRMAllDTO> selectCRMCardAll();

    List<PayTypeDTO> getPayType();

    List<CardCRMAllDTO> selectAllCard();

    /**
     * 查询等级最高的卡的种类数量
     */
    public List<Card> cardNum();
}
